Conversation
🦋 Changeset detectedLatest commit: 082ed38 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Pull request overview
This PR adds TON blockchain analyzer support to the chainlink-deployments-framework. The implementation follows existing patterns for other chain families (Aptos, Sui, Solana) by integrating TON-specific MCMS SDK functionality.
Key changes:
- Added TON transaction analysis capabilities with decoder integration
- Updated dependency versions including Go runtime, MCMS SDK, and various libraries
- Refactored transaction encoding logic to use family-based routing
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| go.mod | Updated Go version to 1.25.3 and bumped various dependencies including MCMS SDK, TON utilities, and added chainlink-ton package |
| experimental/analyzer/upf/upf.go | Integrated TON family support in UPF decoding with mcmstonsdk decoder and simplified encoding logic |
| experimental/analyzer/ton_analyzer.go | New file implementing TON transaction analysis functions mirroring Sui/Aptos patterns |
| experimental/analyzer/report_builder.go | Added TON family handling in proposal and timelock report builders |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 8 out of 9 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 10 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 10 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
experimental/analyzer/upf/upf.go
Outdated
|
|
||
| // Sui: mcms::timelock_schedule_batch, mcms::timelock_bypasser_execute_batch | ||
| // Aptos: package::module::timelock_schedule_batch, package::module::timelock_bypasser_execute_batch | ||
| // TON: ContractType::ScheduleBatch(0x...), ContractType::BypasserExecuteBatch(0x...) |
There was a problem hiding this comment.
WIll TON type will be provided like this? (e.g., "com.chainlink.ton.lib.access.RBAC::GrantRole(0x0)")
There was a problem hiding this comment.
I didn't check the contract type, because with the timelock converter it would be converted to RBACTimelock::ScheduleBatch(0x0)
| name: "TON_decode_failure", | ||
| selector: chainsel.TON_TESTNET.Selector, | ||
| expectedMsg: "failed to decode TON transaction", | ||
| wantErr: false, // TON doesn't unmarshal AdditionalFields, so decode errors go to Method field |
There was a problem hiding this comment.
Hmm, not sure why is here a difference for TON? There shouldn't be one...
There was a problem hiding this comment.
Doesn't SUI impl also surfaces errors via .Method member:
There was a problem hiding this comment.
This test is for default unhappy pass, where the analyze function suppose to fail immediately. Unlike SUI we don't need extra field Unmarshal, so the first error will be hiding in Method field.
There was a problem hiding this comment.
Ok, but what's the reason for diverge in this and other tests?
Where other analyzers fail, TON doesn't - why do we need to catch this error specifically for TON?
There was a problem hiding this comment.
The TON analyzer diverges from other analyzers because it reaches the decode stage, whereas EVM and Solana fail earlier due to missing registry, and Aptos and
Sui fail during additional field decoding. TON handles decode failures gracefully by placing the error in the method field rather than returning an error.
For better readability and more context there, I split the TON case into a separate test with comments explaining this distinction.
There was a problem hiding this comment.
Got it! Thanks for the info.
Still think we should follow up on this: (1) explicitly add error to DecodeCall (vs. using Method), (2) think about unifying other integrations to follow the same approach
| name: "TON_decode_failure", | ||
| selector: chainsel.TON_TESTNET.Selector, | ||
| expectedMsg: "failed to decode TON transaction", | ||
| wantErr: false, // TON doesn't unmarshal AdditionalFields, so decode errors go to Method field |
There was a problem hiding this comment.
Shouldn't diverge from other test cases
| name: "TON_decode_failure", | ||
| selector: chainsel.TON_TESTNET.Selector, | ||
| expectedMsg: "failed to decode TON transaction", | ||
| wantErr: false, // TON doesn't unmarshal AdditionalFields, so decode errors go to Method field |
There was a problem hiding this comment.
Ok, but what's the reason for diverge in this and other tests?
Where other analyzers fail, TON doesn't - why do we need to catch this error specifically for TON?
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 11 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 11 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 11 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 11 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## chainlink-deployments-framework@0.79.0 ### Minor Changes - [#629](#629) [`ff9bb14`](ff9bb14) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - Adds TON blockchain analyzer support - [#704](#704) [`d4a24a9`](d4a24a9) Thanks [@bytesizedroll](https://github.com/bytesizedroll)! - - Removed legacy migration CLI commands that have been superseded by durable pipelines: - `migration run` - Use `durable-pipeline run` instead - `migration list` - Use `durable-pipeline list` instead - `migration latest` - No longer supported - `migration address-book` - Use top-level `address-book` command instead - `migration datastore` - Use top-level `datastore` command instead - Removed the following files: - `engine/cld/legacy/cli/commands/migration.go` - `engine/cld/legacy/cli/commands/migration_test.go` - `engine/cld/legacy/cli/commands/migration_helper.go` - [#701](#701) [`78d475f`](78d475f) Thanks [@krebernisak](https://github.com/krebernisak)! - Add TON chain.Confirm fn --------- Co-authored-by: app-token-issuer-engops[bot] <144731339+app-token-issuer-engops[bot]@users.noreply.github.com>




Jira